export const PREDICATE_CONFIG_KEY_OPTION = [
    {
        key : 'RewritePath' ,
        description : '重写地址 {/beforePath}(?<segment>/?.*),{/afterPath}$\\{segment}'
    } , {
        key : 'After' ,
        description : '某个时间点之后 yyyy-MM-ddTHH:mm:ss.SSS[zone]'
    } , {
        key : 'Before' ,
        description : '某个时间点之前 yyyy-MM-ddTHH:mm:ss.SSS[zone]'
    } , {
        key : 'Between' ,
        description : '某个时间点之间 yyyy-MM-ddTHH:mm:ss.SSS[zone] , yyyy-MM-ddTHH:mm:ss.SSS[zone]'
    } , {
        key : 'Cookie' ,
        description : '包含指定cookie的Key并且该key的值满足正则 {key},{regexp}'
    } , {
        key : 'Header' ,
        description : '包含指定请求头的key并且该key的值满足正则 {key},{regexp}'
    } , {
        key : 'Host' ,
        description : '请求主机名称包含指定主机名称中的任意一个 {pattern},...'
    } , {
        key : 'Method' ,
        description : '请求方法包含指定方式中的任意一个 {METHOD},...'
    } , {
        key : 'Path' ,
        description : '请求路径包含指定路径中的任意一个 {pattern},...'
    } , {
        key : 'Query' ,
        description : '请求路径参数中包含指定key并且该key满足正则 {key},{regexp}'
    } , {
        key : 'RemoteAddr' ,
        description : '请求主机IP地址包含指定列表中的任意一个'
    } , {
        key : 'Weight' ,
        description : '流量按权转发,匹配分组名称一致的多个路由，并按权分配请求， {groupName},{weight}'
    }
] as const



export const PREDICATE_CONFIG_KEYS = PREDICATE_CONFIG_KEY_OPTION.map( it => it.key );

export type PredicateConfigKeysType = typeof PREDICATE_CONFIG_KEYS[number] | string;

export interface RouteDef {

    id : string ,

    order : number ,

    uri : string ,

    predicates : string[] ,

    filters: string[] ,

    metadata : object

}

export const EMPTY_ROUTE_DEF : RouteDef = {

    id : '' ,

    order : 0 ,

    uri : '' ,

    predicates : [] ,

    filters : [] ,

    metadata : {}

}







